package cl.clientesoa;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.Toast;
import cl.clientesws.*;
/**
 * Clase que maneja las operaciones CRUD de las personas
 * @author Renato
 *
 */ public class Tab_PersonasSoa extends Activity{
	 private Button btn_add;
	 private Button btn_update;
	 private Button btn_delete;
	 private Button btn_findall;
	 private Button btn_find;
	 private PersonasSOAWS pws = new PersonasSOAWS();
	 private String respuesta;
	 @Override
	 public void onCreate(Bundle savedInstanceState){
		 super.onCreate(savedInstanceState);
		 /*carga la vista del layout opcionessoa*/
		 this.setContentView(R.layout.opcionessoa);
		 btn_add = (Button) findViewById(R.id.btnadd);
		 btn_update = (Button) findViewById(R.id.btn_update);
		 btn_delete = (Button) findViewById(R.id.btn_delete);
		 btn_findall = (Button) findViewById(R.id.btn_allfind);
		 btn_find = (Button) findViewById(R.id.btn_find);
		 btn_add.setOnClickListener(clickbtn);
		 btn_update.setOnClickListener(clickbtn);
		 btn_delete.setOnClickListener(clickbtn);
		 btn_findall.setOnClickListener(clickbtn);
		 btn_find.setOnClickListener(clickbtn);
	 }
	 //evento on Click que se genera con los botones
	 private OnClickListener clickbtn = new OnClickListener() {
//		 @Override
		 public void onClick(View v) {
			 switch (v.getId()) {
			 case R.id.btnadd:
				 //llamada al metodo ingresar persona
				 alertDialodIngreasarPersona();
				 break;
			 case R.id.btn_update:
				 //llamada al metodo actualizar persona
				 alertDialodActualizarPersona();
				 break;
			 case R.id.btn_delete:
				 //llamada al metodo eliminar persona
				 alertDialodDeletePersona();
				 break;
			 case R.id.btn_allfind:
				 //llamada al metodo buscar todas las personas
				 alertDialodFindAllPersona();
				 break;
			 case R.id.btn_find:
				 //llamada al metodo de buscar persona
				 alertDialodFindPersona();
				 break;
			 }
		 }
	 };
	 /**
	  * Metodo que ingresa los datos de una persona.
	  * @return void
	  * @author MariaJose
	  */
	 public void alertDialodIngreasarPersona(){
		 LayoutInflater factory = LayoutInflater.from(this);
		 final View textEntryView = factory.inflate(R.layout.addpersona, null);
		 AlertDialog.Builder alert = new AlertDialog.Builder(this);
		 alert.setTitle("Ingrese Persona");
		 alert.setView(textEntryView);
		 alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
			 public void onClick(DialogInterface dialog, int whichButton) {
				 /*declara variables de los compontes que se encuentran
en la vista del layout del AlertDialog*/
				 EditText textorut;
				 EditText textodig;
				 EditText textnombre;
				 RadioButton radio_masculino;
				 RadioButton radio_femenino;
				 textorut = (EditText) textEntryView.findViewById(R.id.edit_rut);
				 textodig = (EditText) textEntryView.findViewById(R.id.edit_dig);
				 textnombre = (EditText) textEntryView.findViewById(R.id.edit_nombre);
				 radio_femenino = (RadioButton) textEntryView.findViewById(R.id.radioFemenino);
				 radio_masculino = (RadioButton) textEntryView.findViewById(R.id.radioMasculino);
				 //extrae el valor que fue escrito en los EditText por el usuario
				 String rut = textorut.getText().toString();
				 String verificador = textodig.getText().toString();
				 String nombre = textnombre.getText().toString();
				 //le da un valor al sexo segun radioButton seleccionado
				 int sexo = -1;
				 if(radio_femenino.isChecked())
				 {
					 sexo = 0;
				 }
				 if(radio_masculino.isChecked())
				 {
					 sexo = 1;
				 }
				 if(rut.equals("") || verificador.equals("") || nombre.equals("")|| sexo == -1){
					 alertDialodIngreasarPersona();
				 }
				 else{
					 //llama al Servicio Web addPersona()
					 String resultado = pws.addPersona(rut, verificador, nombre, sexo);
					 Toast.makeText(getBaseContext(), resultado,
							 Toast.LENGTH_SHORT).show();
					 return;
				 }
			 }
		 });
		 alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
			 public void onClick(DialogInterface dialog, int which) {
				 return;
			 }
		 });
		 alert.show();
	 }
	 /**
	  * Metodo que actualiza los datos de una persona.
	  * @return void
	  * @author MariaJose
	  */
	 public void alertDialodActualizarPersona(){
		 LayoutInflater factory = LayoutInflater.from(this);
		 final View textEntryView = factory.inflate(R.layout.updatepersona, null);
		 AlertDialog.Builder alert = new AlertDialog.Builder(this);
		 alert.setTitle("Actualizar Persona");
		 alert.setView(textEntryView);
		 alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
			 public void onClick(DialogInterface dialog, int whichButton) {
				 EditText textorutonombre;
				 EditText textonuevo;
				 RadioButton radio_nombre;
				 RadioButton radio_rut;
				 RadioButton radio_digito;
				 RadioButton radio_sexo;
				 textorutonombre = (EditText) textEntryView.findViewById(R.id.edit_rut_nombre);
				 textonuevo = (EditText) textEntryView.findViewById(R.id.edit_nuevovalor);
				 radio_nombre = (RadioButton) textEntryView.findViewById(R.id.radionombre);
				 radio_rut = (RadioButton) textEntryView.findViewById(R.id.radiorut);
				 radio_digito = (RadioButton) textEntryView.findViewById(R.id.radiodigito);
				 radio_sexo = (RadioButton) textEntryView.findViewById(R.id.radiosexo);
				 String rutonombre = textorutonombre.getText().toString();
				 String nuevocampo = textonuevo.getText().toString();
				 int opcionRbtn = -1;
				 if(radio_nombre.isChecked())
				 {
					 opcionRbtn = 0;
				 }
				 if(radio_rut.isChecked()){
					 opcionRbtn = 1;
				 }
				 if(radio_digito.isChecked()){
					 opcionRbtn = 2;
				 }
				 if(radio_sexo.isChecked()){
					 opcionRbtn = 3;
				 }
				 if(rutonombre.equals("") || nuevocampo.equals("")|| opcionRbtn == -1){
					 alertDialodActualizarPersona();
				 }
				 else{
					 String resultado = pws.updatePersona(rutonombre, opcionRbtn, nuevocampo);
					 Toast.makeText(getBaseContext(), resultado,
							 Toast.LENGTH_SHORT).show();
					 return;
				 }
			 }
		 });
		 alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
			 public void onClick(DialogInterface dialog, int which) {
				 return;
			 }
		 });
		 alert.show();
	 }
	 /**
	  * Metodo que elimina una persona segun su rut.
	  * @return void
	  * @author MariaJose
	  */
	 public void alertDialodDeletePersona(){
		 LayoutInflater factory = LayoutInflater.from(this);
		 final View textEntryView = factory.inflate(R.layout.deletepersona, null);
		 AlertDialog.Builder alert = new AlertDialog.Builder(this);
		 alert.setTitle("Eliminar Persona");
		 alert.setView(textEntryView);
		 alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
			 public void onClick(DialogInterface dialog, int whichButton) {
				 EditText textorut;
				 textorut = (EditText) textEntryView.findViewById(R.id.edit_rut_delete);
				 String rut = textorut.getText().toString();
				 if(rut.equals("")){
					 alertDialodDeletePersona();
				 }
				 else{
					 String resultado = pws.borrarPersona(rut);
					 Toast.makeText(getBaseContext(), resultado,
							 Toast.LENGTH_SHORT).show();
					 return;
				 }
			 }
		 });
		 alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
			 public void onClick(DialogInterface dialog, int which) {
				 return;
			 }
		 });
		 alert.show();
	 }
	 /**
	  * Metodo que busca a una persona.
	  * @return void
	  * @author MariaJose
	  */
	 public void alertDialodFindPersona(){
		 LayoutInflater factory = LayoutInflater.from(this);
		 final View textEntryView = factory.inflate(R.layout.findpersona, null);
		 AlertDialog.Builder alert = new AlertDialog.Builder(this);
		 alert.setTitle("Buscar Persona");
		 alert.setView(textEntryView);
		 alert.setPositiveButton("Buscar", new DialogInterface.OnClickListener() {
			 public void onClick(DialogInterface dialog, int whichButton) {
				 EditText textoFind;
				 textoFind = (EditText) textEntryView.findViewById(R.id.edit_find_persona);
				 String buscar = textoFind.getText().toString();
				 if(buscar.equals("")){
					 alertDialodFindPersona();
				 }
				 else{
					 /**
					  * realiza la llamada de buscar al Ws
					  */
					 respuesta = pws.findPersona(buscar); Toast.makeText(Tab_PersonasSoa.this, respuesta, Toast.LENGTH_LONG).show();
					 return;
				 }
			 }
		 });
		 alert.setNegativeButton("Salir", new DialogInterface.OnClickListener() {
			 public void onClick(DialogInterface dialog, int which) {
				 return;
			 }
		 });
		 alert.show();
	 }
	 /**
	  * Metodo que busca a todas las personas segun parametro de busqueda.
	  * @return void
	  * @author MariaJose
	  */
	 public void alertDialodFindAllPersona(){
		 LayoutInflater factory = LayoutInflater.from(this);
		 final View textEntryView = factory.inflate(R.layout.findpersona, null);
		 AlertDialog.Builder alert = new AlertDialog.Builder(this);
		 alert.setTitle("Buscar registros con :");
		 alert.setView(textEntryView);
		 alert.setPositiveButton("Buscar", new DialogInterface.OnClickListener() {
			 public void onClick(DialogInterface dialog, int whichButton) {
				 EditText textoFind;
				 textoFind = (EditText) textEntryView.findViewById(R.id.edit_find_persona);
				 String buscar = textoFind.getText().toString();
				 /*
				  * realiza la llamada de buscar al Ws y lanza una nueva actividad
				  * para mostrar los datos de la busqueda.
				  */
				 respuesta = pws.finAllPersona(buscar);
				 Intent i = new Intent(); i.setClass(Tab_PersonasSoa.this, ResultadoFindPersona.class);
				 //entrega el Json que es devuelto por el servicio
				 i.putExtra("datos", respuesta);
				 startActivity(i);
				 return;
			 }
		 });
		 alert.setNegativeButton("Salir", new DialogInterface.OnClickListener() {
			 public void onClick(DialogInterface dialog, int which) {
				 return;
			 }
		 });
		 alert.show();
	 }
 }